package jinyilw.swing.rlaf.ui;

import javax.swing.JComponent;
import javax.swing.JMenuItem;
import javax.swing.MenuElement;
import javax.swing.MenuSelectionManager;
import javax.swing.plaf.ComponentUI;
import java.awt.Point;
import java.awt.event.MouseEvent;

/**
 * @author Jinyi
 */
public class RCheckBoxMenuItemUI extends RMenuItemUI
{
	public static ComponentUI createUI(JComponent c)
	{
		return new RCheckBoxMenuItemUI();
	}

	@Override
	protected String getPropertyPrefix()
	{
		return "CheckBoxMenuItem";
	}

	public void processMouseEvent(JMenuItem item, MouseEvent e,
			MenuElement[] path, MenuSelectionManager manager)
	{
		Point p = e.getPoint();
		if (p.x >= 0 && p.x < item.getWidth() && p.y >= 0
				&& p.y < item.getHeight())
		{
			if (e.getID() == MouseEvent.MOUSE_RELEASED)
			{
				manager.clearSelectedPath();
				item.doClick(0);
			} else
				manager.setSelectedPath(path);
		} else if (item.getModel().isArmed())
		{
			MenuElement[] newPath = new MenuElement[path.length - 1];
			int i, c;
			for (i = 0, c = path.length - 1; i < c; i++)
				newPath[i] = path[i];
			manager.setSelectedPath(newPath);
		}
	}
}
